﻿function CurriculumVitae() {

    this.Clie_ID = null;
    this.CodigoConvocatoria = null;

    //Para verificar el estado de la ficha
    this.VerificarEstadoFicha = function () {
        return true;
    };

    this.PreInit = function () {
        var _parent = this;
    }

    //Despues de cargar el formulario
    this._PostForm = function () {
        var _parent = this;
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();
    }

    this.ValidacionCamposForm = function () {

        var _parent = this;
        
        //_parent._getForm().find("#Clie_HojaVida").addClass("validate[required]");
    }
    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;

        _parent._ValidacionExtensionArchivo(
            _parent._getForm().find("#Clie_HojaVida")
            , ["jpeg", "png", "jpg", "doc", "docx", "pdf"]
            , "Formato de archivo incorrecto para el curriculum"
            , "Los formatos permitidos son jpg, png, doc, docx y pdf"
            );

        _parent.StyleInputFile(_parent._getForm().find("#Clie_HojaVida"));

        _parent._getForm().validationEngine({
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {

                if (status) {
                    _parent._getForm().ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {

                            //VerificarEstadosFicha(Clie_ID, CodigoConvocatoria);

                            _parent._MensajesOperacion("success", "Registro grabado", "El archivo del Curriculum Vitae fue subido correctamente");
                            _parent.Form(
                                {
                                    Clie_ID: _parent.Clie_ID,
                                    CodigoConvocatoria: _parent.CodigoConvocatoria
                                }
                            );

                            _parent.VerificarEstadoFicha();
                        }
                    });
                }
            }
        });
    }
}


function ExperienciaLaboral() {

    this.Clie_ID = null;
    this.CodigoConvocatoria = null;

    //Para verificar el estado de la ficha
    this.VerificarEstadoFicha = function () {
        return true;
    };

    //Funcion que sirve para ir a la siguiente ficha
    this.FichaSiguiente = function () {
        return true;
    }

    //Funcion que sirve para ir a la anterior
    this.FichaAnterior = function () {
        return true;
    }

    this.PreInit = function () {
        var _parent = this;
        _parent.TituloModalForm = "Experiencia laboral";
        _parent.CssModalForm = {
            'top': "40%",
            'width': '800px',
            'margin-left': function () {
                return -($(this).width() / 2);
            }
        }

        //Accion para la siguiente ficha
        var cont = _parent._getCont();
        cont.find("#Regresar").click(function () {
            _parent.FichaAnterior();
        });
        cont.find("#Continuar").click(function () {
            _parent.FichaSiguiente();
        });

        _parent._Editar();
        _parent._Eliminar();

        _parent._getCont().find("#nuevo").click(function () {
            _parent.Form(
             {
                Clie_ID: _parent.Clie_ID,
                CodigoConvocatoria: _parent.CodigoConvocatoria
             }
            );
        })
    }


    /**
    Editar el registro
    */
    this._Editar = function () {

        var _parent = this;

        _parent._getContList().off('click', '.editar');
        _parent._getContList().on('click', '.editar', function (e) {
            e.preventDefault();
            var obj = $(this);


            _parent.Form(
                {
                    Clie_ID: _parent.Clie_ID,
                    ExLa_ID: obj.attr('data-ExLa_ID'),
                    CodigoConvocatoria: _parent.CodigoConvocatoria
                }
            )
        });
    };

    /**
    Eliminar el registro
    */
    this._Eliminar = function () {

        var _parent = this;

        _parent._getContList().off('click', '.eliminar');
        _parent._getContList().on('click', '.eliminar', function (e) {
            e.preventDefault();
            var obj = $(this);

            var confirmacion = _parent._MensajeConfirmacion();

            confirmacion.yes = function () {
                jQuery.post(URL_PAGE + "Postulante/FichaPostgrado/EliminarExperienciaLaboral",
                                         {
                                             Clie_ID: _parent.Clie_ID,
                                             ExLa_ID: obj.attr('data-ExLa_ID')
                                         },
                             function (data) {

                                 confirmacion.getModal.modal('hide')
                                 _parent._MensajesOperacion("success",
                                                    "Registro eliminado",
                                                    "La experiencia laboral fue eliminada correctamente");
                                 _parent.List(
                                    {
                                        Clie_ID: _parent.Clie_ID,
                                        CodigoConvocatoria: _parent.CodigoConvocatoria
                                    });

                                 _parent.VerificarEstadoFicha();
                             }
                   , "json");
            };
            confirmacion.modal();

        });
    };


    //Despues de cargar el formulario
    this._PostForm = function () {

        var _parent = this;

        _parent._InicializarVisualizacionControles();
        _parent.ValidacionCamposForm();
        _parent._CargarEventosForm();

        // Dandole scroll al alto del formulario
        _parent.ModalForm.find(".modal-body").css({ overflow: 'auto',
            'height': '360px'
        })
    };

    this.ValidacionCamposForm = function () {

        var _parent = this;

        var form = _parent._getForm();

        form.find("#ExLa_NomEmpresa").addClass("span6");
        form.find("#ExLa_DesCargo").addClass("ExLa_DesCargo");
        form.find("#ExLa_FecInicio").addClass("input-small");
        form.find("#ExLa_FecFinal").addClass("input-small");
        form.find("#ExLa_Sueldo").addClass("input-small");


        form.find("#Pais_Codigo").addClass("input-xxlarge");
        form.find("#Dpto_Codigo").addClass("input-medium");
        form.find("#Prov_Codigo").addClass("input-medium");
        form.find("#Dist_Codigo").addClass("input-medium");
        form.find("#ExLa_Direccion").addClass("input-xxlarge");
    };

    /**
    Inicializacion de visualizacion de controles del formulario
    */
    this._InicializarVisualizacionControles = function () {

        var _parent = this;

        var form = _parent._getForm();

        //Cuando obtenemos la experiencia laboral logica para visualizar la empresa
        form.find("#buscar-empresa").show();
        form.find("#buscar-empresa #busqueda").show();
        form.find("#buscar-empresa #resultado").hide();
        form.find("#Layer_Superiores").hide();

        form.find("#nueva-empresa").hide();

        if (form.find("#ExLa_ID").val() != "" && form.find("#ExLa_ID").val() != "0") {
            if (form.find("#Empr_Codigo").val() == "" && form.find("#ExLa_NomEmpresa") != "") {
                //Si no tiene empresa, pero el postulante ingreso una nueva empresa ocultamos la opcion de nueva empresa
                //y mostramos el formulario de nueva empresa
                form.find("#buscar-empresa").hide();
                form.find("#buscar-empresa #busqueda").show();
                form.find("#buscar-empresa #resultado").hide();

                form.find("#nueva-empresa").show();
            } else {
                form.find("#buscar-empresa").show();
                form.find("#buscar-empresa #resultado").show();
                form.find("#buscar-empresa #busqueda").hide();

                form.find("#nueva-empresa").hide();
            }
        }

        //Nuevo cargo
        form.find("#nuevo-cargo").hide();
        if (form.find("#ExLa_ID").val() != "" && form.find("#ExLa_ID").val() != "0") {
            if (form.find("#Carg_Codigo").val() == "0" && form.find("#OtroCargo") != "") {
                form.find("#nuevo-cargo").show();
            }
        }

        //Validando la descripcion del cargo
        form.find("#descripcion-cargo").hide();
        //Validando si existe el id de la descripcion, es decir editando
        if (form.find("#ExLa_ID").val() != "" && form.find("#ExLa_ID").val() != "0") {
            if (form.find("#Carg_Codigo").val() != "0") {
                form.find("#descripcion-cargo").show();
            }
        }


        //Informacion laboral
        form.find("#ubigeoLaboral").hide();
        if (form.find("#Pais_Codigo").val() == "PE") {
            form.find("#ubigeoLaboral").show();
        }

        // Activando Otro cargo
        if (form.find("#Carg_Codigo").val() == "0") {
            form.find("#Layer_Superiores").show();
        }        
    };

    /**
    Carga de eventos
    */
    this._CargarEventosForm = function () {

        var _parent = this;

        var form = _parent._getForm();

        if (form.find("#ExLa_FecInicio").val() != null) {
            var stateOFI = form.find("#ExLa_FecInicioRequired").val().toLowerCase();

            _parent.ConvertFechaCombos(form.find("#ExLa_FecInicio"), "dd/mm/AAAA", "mm/AAAA", stateOFI);
        }

        if (form.find("#ExLa_FecFinal").val() != null) {
            var stateOFF = form.find("#ExLa_FecFinalRequired").val().toLowerCase();

            _parent.ConvertFechaCombos(form.find("#ExLa_FecFinal"), "dd/mm/AAAA", "mm/AAAA", stateOFF);
        }

        _parent._ValidacionExtensionArchivo(
            _parent._getForm().find("#ExLa_CartaPresentacion")
            , ["jpeg", "png", "jpg", "doc", "docx", "pdf"]
            , "Formato de archivo incorrecto para la carta de presentación"
            , "Los formatos permitidos son jpg, png, doc, docx y pdf"
            );

        _parent.StyleInputFile(_parent._getForm().find("#ExLa_CartaPresentacion"));

        //Trabajo actual
        if (form.find("#ExLa_FlagActual").attr("checked") == "checked") {
            form.find("#ExLa_FecFinal").val("");
            form.find("#ExLa_FecFinal_dia").val("");
            form.find("#ExLa_FecFinal_dia").attr("disabled", "disabled");
            form.find("#ExLa_FecFinal_mes").val("");
            form.find("#ExLa_FecFinal_mes").attr("disabled", "disabled");
            form.find("#ExLa_FecFinal_anio").val("");
            form.find("#ExLa_FecFinal_anio").attr("disabled", "disabled");

            form.find("#ExLa_FecFinal_dia").removeClass("validate[required]");
            form.find("#ExLa_FecFinal_mes").removeClass("validate[required]");
            form.find("#ExLa_FecFinal_anio").removeClass("validate[required]");
        }
        else {
            var stateOFF = form.find("#ExLa_FecFinalRequired").val();

            if (stateOFF != null && stateOFF.toLowerCase() == 'false') {
                form.find("#ExLa_FecFinal_dia").removeClass("validate[required]");
                form.find("#ExLa_FecFinal_mes").removeClass("validate[required]");
                form.find("#ExLa_FecFinal_anio").removeClass("validate[required]");
            }
        }

        _parent._getContForm().find("#aceptar").click(function () {
            $(this).attr("disabled", "disabled");
            form.submit();
        });

        form.validationEngine({
            promptPosition: "topLeft",
            ajaxSubmit: true,
            onValidationComplete: function (form, status) {
                if (status) {
                    var stateOFF = _parent._getForm().find("#ExLa_FecFinalRequired").val();

                    if (stateOFF != null && stateOFF.toLowerCase() != 'false') {
                        var rangoValido = _parent.ValidarFechaRango(_parent._getForm().find("#ExLa_FecInicio"), _parent._getForm().find("#ExLa_FecFinal"), "dd/mm/AAAA");

                        if (!rangoValido && (form.find("#ExLa_FlagActual").attr("checked") != "checked")) {
                            _parent._getForm().find("#ExLa_FecFinal_anio").validationEngine('showPrompt',
                            'La fecha de fin es menor que la fecha de inicio'
                            , 'error'
                            , true);
                            _parent._getContForm().find("#aceptar").removeAttr("disabled");
                            return false;
                        }
                    }

                    form.ajaxSubmit({
                        success: function (responseText, statusText, xhr, $form) {
                            _parent._MensajesOperacion("success", "Registro grabado", "La experiencia laboral fue registrada correctamente");
                            _parent.List(
                                {
                                    Clie_ID: _parent.Clie_ID,
                                    CodigoConvocatoria: _parent.CodigoConvocatoria
                                }
                            );
                            _parent._getContForm().modal('hide');

                            _parent.VerificarEstadoFicha();
                        }
                    });
                } else {
                    _parent._getContForm().find("#aceptar").removeAttr("disabled");
                }
            }
        });

        //Empresa de la experiencia laboral
        form.find("#no-encuentro-mi-empresa").click(function () {
            form.find("#nueva-empresa").slideDown();
            form.find("#buscar-empresa").slideUp();

            //Limpiando el codigo de la empresa
            form.find("#Empr_Codigo").val("");
        });

        form.find("#cerrar-nueva-empresa").click(function () {
            form.find("#nueva-empresa").slideUp();
            form.find("#buscar-empresa").slideDown();
        });

        form.find("#cambiar-empresa").click(function () {
            form.find("#buscar-empresa #resultado").slideUp();
            form.find("#buscar-empresa #busqueda").slideDown();
        });

        //Cargo de la experiencia laboral
        form.find("#Carg_Codigo").change(function () {
            var obj = $(this);

            if (obj.val() == "0") {
                form.find("#nuevo-cargo").slideDown();
                form.find("#descripcion-cargo").slideUp();
                form.find("#Layer_Superiores").show();
            } else {
                form.find("#nuevo-cargo").slideUp();
                form.find("#descripcion-cargo").slideDown();
                form.find("#Layer_Superiores").hide();
            }
        });

        form.find("#Pais_Codigo").change(function () {
            var obj = $(this);

            if (obj.val() == "PE") {
                form.find("#ubigeoLaboral").slideDown();
            } else {
                form.find("#ubigeoLaboral").slideUp();
            }
        });

        var UrlsUbigeo = {
            idPais: "#Pais_Codigo",
            idDepartamento: "#Dpto_Codigo",
            idProvincia: "#Prov_Codigo",
            idDistrito: "#Dist_Codigo",
            URLDepartamento: URL_PAGE + "Shared/Catalogo/ObtenerDepartamentoPorPais",
            URLProvincia: URL_PAGE + "Shared/Catalogo/ObtenerProvinciaPorDepartamento",
            URLDistrito: URL_PAGE + "Shared/Catalogo/ObtenerDistritoPorPaisDeptProvincia",
            CapaDepProvDist: "#ubigeoLaboral"
        }

        _parent._Ubigeo(UrlsUbigeo);

        //Trabajo Actual
        form.find("#ExLa_FlagActual").change(function () {
            var obj = $(this);

            if (obj.attr("checked") == "checked") {
                form.find("#ExLa_FecFinal").val("");
                form.find("#ExLa_FecFinal_dia").val("");
                form.find("#ExLa_FecFinal_dia").attr("disabled", "disabled");
                form.find("#ExLa_FecFinal_mes").val("");
                form.find("#ExLa_FecFinal_mes").attr("disabled", "disabled");
                form.find("#ExLa_FecFinal_anio").val("");
                form.find("#ExLa_FecFinal_anio").attr("disabled", "disabled");

                form.find("#ExLa_FecFinal_dia").removeClass("validate[required]");
                form.find("#ExLa_FecFinal_mes").removeClass("validate[required]");
                form.find("#ExLa_FecFinal_anio").removeClass("validate[required]");
            } else {
                form.find("#ExLa_FecFinal_dia").removeAttr("disabled");
                form.find("#ExLa_FecFinal_mes").removeAttr("disabled");
                form.find("#ExLa_FecFinal_anio").removeAttr("disabled");

                var stateOFF = form.find("#ExLa_FecFinalRequired").val().toLowerCase();

                if (stateOFF == 'true') {
                    form.find("#ExLa_FecFinal_dia").addClass("validate[required]");
                    form.find("#ExLa_FecFinal_mes").addClass("validate[required]");
                    form.find("#ExLa_FecFinal_anio").addClass("validate[required]");
                }
            }
        });

        //Auto complete de la empresa
        var busqueda = form.find("#ExLa_NomEmpresa");
        busqueda.autocomplete({
            method: "POST",
            minLength: 3,
            source:
        function (request, response) {
            $.ajax({
                url: URL_PAGE + "Shared/Catalogo/ListarEmpresa",
                data: { term: busqueda.val() },
                dataType: "json",
                type: "POST",
                success: function (data) {
                    response(data);
                }
            });
        },
            focus: function (event, ui) {
                busqueda.val("");
                return false;
            },
            select: function (event, ui) {
                //Ocultar el campo de texto para la busqueda
                var busquedaForm = form.find("#buscar-empresa #busqueda");
                busquedaForm.slideUp();

                var obj = form.find("#buscar-empresa #resultado");
                var item = ui.item;

                obj.find("#Empr_Codigo").val(item.Id);
                obj.find("#lbl-nombreempresa").html(item.NombreEmpresa);
                obj.find("#lbl-ruc").html(item.Ruc);
                obj.find("#lbl-actividad").html(item.Actividad);
                obj.slideDown();
                return false;
            }
        }).data("autocomplete")._renderItem = function (ul, item) {
            return $("<li></li>")
        	.data("item.autocomplete", item)
        	.append("<a><table border=0><tr><td>Razón social:<b>" + item.NombreEmpresa + "</b><br />" + "Ruc: <b>" + item.Ruc + "</b><br />" + "Actividad: <b>" + item.Actividad + "</b></td></tr></table></a>")
        	.appendTo(ul);
        };
    };

}